$(function() {
    toastr.options = messageOpts;

    $("#permissionTable").bootstrapTable('destroy').bootstrapTable({
        url : "/user/permissionList",
        dataType : "json",
        method : 'get',
        striped: true,  //行间隔色
        cache : false,  //禁用缓存
        pageNumber: 1,  //初始化加载第一页
        pagination: true,//是否分页
        sidePagination: "client",//前端分页
        pageSize: 5,//单页记录数
        pageList: [5, 10, 15],//可选择单页记录数
        clickToSelect : true,
        theadClasses: "thead-blue",
        queryParams: function (params) {
            //向服务器传递的参数
            return {
                roleName : $("#search_name").val(),
            };
        },
        responseHandler : function(res) {
            return res.data;
        },
        columns : [
            {
                title : "编号",
                field : "roleId",
                sortable : true,
                align : "center",
            },
            {
                title : "角色",
                field : "roleName",
                sortable : true,
                align : "center",
            },
            {
                title : "修改時間",
                field : "modifiyDate",
                sortable : true,
                align : "center",
            },
            {
                title : "状态",
                field : "status",
                sortable : true,
                align : "center",
                formatter : function(object, row, index) {
                    if (object === 'Y') {
                        return '有效';
                    }else {
                        return '无效';
                    }

                },
            },
            {
                title : "操作",
                field : "id",
                formatter : operation,
                align : "center",
            }
        ]
    });
    function operation(value,row,index) {
        htm = "<button type=\"button\" class=\"btn btn-primary\" style='width: 40px;' data-target=\"#updateModel\" data-toggle=\"modal\"><span class=\"glyphicon glyphicon-pencil\"></span></button> "
            + "<button type=\"button\" class=\"btn btn-danger\" style='width: 40px;' data-target=\"#deleteModel\" data-toggle=\"modal\"><span class=\"glyphicon glyphicon-trash\"></span></button> ";
        return htm;
    }

    $("#search").click(function(){
        $("#permissionTable").bootstrapTable("refresh");
        $("#search_name").val("");
    });

    $("#insertBtn").click(function() {
         if ($("#insertRoleName").val() === null || $("#insertRoleName").val() === ''){
             toastr.warning('请填写相关信息！');
             return;
         }

        if ($("#insertRoleName").val() === 'admin'){
            toastr.warning('该角色不允许添加！');
            return;
        }

        var menus1 = [];
        $('input[name="menus"]:checked').each(function() {
            menus1.push($(this).val());
        });

        if(menus1.length < 1){
            toastr.warning("请至少选择一个菜单项");
            return;
        }

        $.ajax({
            url : "/user/insertPermission",
            type : "post",
            data : {
                roleName: $("#insertRoleName").val(),
                menus: menus1.toString(),
            },
            dataType : "json",
            success : function(data) {
                if (data.state === 200) {
                    toastr.success('添加成功');
                    $("#insertRoleName").val("");
                    $("#menus").val("");
                    $("#permissionTable").bootstrapTable("refresh");
                    $("#insertModel").modal('hide');
                }else {
                    toastr.error(data.message);
                }
            }
        })
    });

    var roleId;
    $("#deleteModel").on("show.bs.modal",function (event){
        var thisBtn = $(event.relatedTarget);
        roleId = thisBtn.closest('tr').find('td').eq(0).text();
    });

    $('#insertModel').on('hide.bs.modal', function () {
        $('#insertModel').find('input[type="checkbox"]').prop('checked', false);
    })

    $("#deleteBtn").click(function() {
        $.ajax({
            url : "/user/deletePermission",
            type : "post",
            data: {
                roleId : roleId,
            },
            dataType : "json",
            success : function(data){
                if (data.state === 200) {
                    $("#permissionTable").bootstrapTable("refresh");
                    $("#deleteModel").modal('hide');
                    toastr.success('操作成功');
                }else {
                    toastr.error(data.message);
                }
            }
        })
    })

    //编辑权限
    var roleName;
    $("#updateModel").on("show.bs.modal",function (event){
        var thisBtn = $(event.relatedTarget);
        var roleId = thisBtn.closest('tr').find('td').eq(0).text();
        roleName = thisBtn.closest('tr').find('td').eq(1).text();
        let menusString;
        $.ajax({
            url : "/user/permissionList",
            type : "post",
            data: {
                roleName : roleName,
            },
            dataType : "json",
            success : function(res){
                if (res.state === 200) {
                    menusString = res.data[0].menusString;
                    $('input[name="menus1"]').each(function() {
                        let menusJson = eval(menusString);
                        for (let i = 0; i < menusJson.length; i++) {
                            if (menusJson[i].id==$(this).val()){
                                $(this).prop('checked',true);
                            }
                        }
                    });
                    $("#updateRoleName").val(roleName);
                    $("#updateRoleId").val(roleId);
                }else {
                    toastr.error(res.message);
                }
            }
        })
    });

    $('#updateModel').on('hide.bs.modal', function () {
        $('#updateModel').find('input[type="checkbox"]').prop('checked', false);
    })

    $("#updateBtn").click(function() {
        if($("#updateRoleName").val() == null || $("#updateRoleName").val() == ''){
            return toastr.warning("请输入角色名！");
        }
        var menus1 = [];
        $('input[name="menus1"]:checked').each(function() {
            menus1.push($(this).val());
        });
        if(menus1.length < 1) {
            toastr.warning("请至少选择一个菜单项");
            return;
        }

        $.ajax({
            url : "/user/updatePermission",
            type : "post",
            data : {
                roleId : $("#updateRoleId").val(),
                roleName : $("#updateRoleName").val(),
                menus : menus1.toString(),
            },
            dataType : "json",
            success : function(data) {
                $("#permissionTable").bootstrapTable("refresh");
                $("#updateModel").modal('hide');
                if (data.state === 200) {
                    toastr.success("修改成功");
                }else {
                    toastr.error(data.message);
                }
            }
        })
    });
})
